package com.itlong.cloud.enumerate;

/**
 * <desc>
 *      物业设备类型枚举
 * </desc>
 *
 * @createDate 2017-09-22
 */
public enum PropertyEquipTypeEnum {

    ELEVATOR("电梯", 1),                        //电梯
    OUT_CALL_CONTROLLER("外呼控制器",4),
    BLUETOOTH_ELEVATOR("普通电梯",11),          //蓝牙电梯
    CLOUD_ELEVATOR("云电梯",12),                //云电梯
    BLUETOOTH_CALL("蓝牙外呼设备",13),                //云电梯
    CLOUD_PASS_RECORD_ELEVATOR("云电梯",4),        //云电梯通行记录类型
    CLOUD_ELEVATOR_DEVICE_TYPE("硬件端云电梯",33),//硬件端传参云电梯类型
    CLOUD_ELEVATOR_CLUSTER_CONTROLLER("云电梯群控器",128),  //硬件端传参云电梯控制器类型
    ENTRANCE("门禁", 2),                           //门禁
    BLUETOOTH_ENTRANCE("蓝牙门禁",21),             //蓝牙门禁
    CLOUD_ENTRANCE_DEVICE("云门禁",22),            //云门禁
    CLOUD_WIPPEN_DEVICE("云联动器",23),            //云联动器
    CLOUD_UNIBODY_FACE_DEVICE("一体式人脸识别门禁",24),            //一体式人脸识别门禁
    CLOUD_UNIBODY_ENTRANCE_DEVICE("一体式云门禁",25),            //一体式云门禁
    CLOUD_WIPPEN_DEVICE_TYPE("硬件端云联动器",22),//硬件端传参云联动器类型

    CLOUD_INTERCOM("云对讲", 3),                       //云对讲
    CLOUD_INTERCOM_ENTRANCE("云对讲（门口机）", 31),        //云对讲（门口机）
    CLOUD_INTERCOM_FENCE("云对讲（围墙机）", 32),        //云对讲（围墙机）
    PAD("人脸平板",4),
    CLOUD_CONTROLLER("云群控制器",5),
    PAD_FACE_RECOGNITION("平板人脸识别",15),          // 平板人脸识别，多媒体资源模块选择设备类型

    CLOUD_ENTRANCE("云门禁",17),          // 平板人脸识别，多媒体资源模块选择设备类型
    HARDWARE_CLOUD_UNIBODY_ENTRANCE_DEVICE("硬件一体式云门禁",18),            //一体式云门禁


    UNKOWNTYPE("未知设备类型", -1),                //未知设备类型
    ;
    private String description;
    private Integer type;

    /**
     * <desc>
     *      物业设备类型枚举无参构造函数
     * </desc>
     * @param
     * @return
     * @author Biao.R
     * @createDate 2017/10/13
     */
    PropertyEquipTypeEnum() {
    }

    /**
     * <desc>
     *      物业设备类型枚举描述与类型构造函数
     * </desc>
     * @param description 描述
     * @param type 类型
     * @return
     * @author Biao.R
     * @createDate 2017/10/13
     */
    PropertyEquipTypeEnum(String description,Integer type) {
        this.type = type;
        this.description = description;
    }

    /**
     * <desc>
     *      获取物业设备类型枚举描述
     * </desc>
     * @param
     * @return String
     * @author Biao.R
     * @createDate 2017/10/13
     */
    public String getDescription() {
        return description;
    }

    /**
     * <desc>
     *      获取物业设备类型枚举类型
     * </desc>
     * @param
     * @return Integer
     * @author Biao.R
     * @createDate 2017/10/13
     */
    public Integer getType() {
        return type;
    }

    /**
     * <desc>
     *      获取枚举的描述
     * </desc>
     * @param type 枚举类型
     * @return 枚举描述
     * @author Biao.R
     * @createDate 2017/10/13
     */
    public static String getDescription(Integer type){
        if (type == null) {
            return null;
        }
        PropertyEquipTypeEnum[] types = PropertyEquipTypeEnum.values();
        for(PropertyEquipTypeEnum limitCategory : types ){
            if(limitCategory.getType() == type){
                return limitCategory.getDescription();
            }
        }
        return "";
    }

    /**
     * <desc>
     *      根据设备类型获取设备类型的枚举
     * </desc>
     * @param equipType 枚举类型
     * @return 枚举描述
     * @author Biao.R
     * @createDate 2017/10/13
     */
    public static PropertyEquipTypeEnum getByEquipType(Integer equipType){
        if (equipType != null) {
            for (PropertyEquipTypeEnum value : values()) {
                if (value.getType().equals(equipType)) {
                    return value;
                }
            }
        }
        return UNKOWNTYPE;
    }

    /**
     * <desc>
     *      物业设备类型枚举是否包含某个基本设备类型（电梯、门禁、云对讲）
     * <desc/>
     *
     * @param type 设备类型
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-30
     */
    public static boolean containsBasicEquipType(Integer type){
        if (null == type){
            return false;
        }
        return ELEVATOR.getType().equals(type)
                || ENTRANCE.getType().equals(type)
                || CLOUD_INTERCOM.getType().equals(type)
                || CLOUD_ELEVATOR.getType().equals(type)
                || BLUETOOTH_ELEVATOR.getType().equals(type)
                || BLUETOOTH_ENTRANCE.getType().equals(type)
                || CLOUD_ENTRANCE_DEVICE.getType().equals(type)
                || CLOUD_ELEVATOR_CLUSTER_CONTROLLER.getType().equals(type)
                || PAD.getType().equals(type);
    }

    /**
     * <desc>
     *      是否是云对讲设备（门口机/围墙机）
     * <desc/>
     *
     * @param type 设备类型
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-30
     */
    public static boolean isCloudIntercom(Integer type){
        if (null == type){
            return false;
        }
        return CLOUD_INTERCOM_ENTRANCE.type.equals(type) || CLOUD_INTERCOM_FENCE.type.equals(type);
    }
}
